#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDateTime>
#include <QMessageBox>
#include <QFileDialog>
#include <QStandardItemModel>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 初始化服务器（示例路径）
    QString saveDir = QApplication::applicationDirPath() + "/data";
    m_server = new Server(saveDir, this);

    if (!m_server->listen(QHostAddress::Any, 8000)) {
        QMessageBox::critical(this, "错误", "服务器启动失败");
    }
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//不能直接修改表格的元素
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//每次选中会选中一行
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//让m_model自适应占满tableView
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::updatefile()
{

}


void MainWindow::on_btn_select_clicked()
{
    // 1. 弹出文件选择对话框
    QString filePath = QFileDialog::getOpenFileName(
        this,
        "选择.dat文件",
        QApplication::applicationDirPath() + "/data",
        "数据文件 (*.dat)"
        );

    if(filePath.isEmpty()) {
        return;
    }
    qDebug()<<filePath;
    // 2. 解析选中的文件
    parseDatFile(filePath);
}

void MainWindow::parseDatFile(const QString &filePath)
{
    QFile file(filePath);
    if(!file.open(QIODevice::ReadOnly)) {
        QMessageBox::warning(this, "错误", "无法打开文件: " + file.errorString());
        return;
    }
    QByteArray data=file.readAll();
    file.close();

    QDataStream in(data);
    in.setVersion(QDataStream::Qt_6_5);

    char header[5]={0};
    in.readRawData(header,4);
    if(strcmp(header,"FLST")!=0){
        QMessageBox::warning(this, "错误", "无效的文件格式头");
        return;
    }

    //读取目录路径
    QString dirPath;
    in >> dirPath;
    qDebug()<<dirPath;
    ui->lb_url->setText(dirPath);

    quint32 filecount;
    in>>filecount;

    QList<QStandardItem*> lRow;
    QStandardItemModel *m_temModel=new QStandardItemModel;
    // 2.5 读取每个文件名
    for (quint32 i = 0; i < filecount; ++i) {
        lRow.clear();
        QString fileName;
        in >> fileName;
        QStandardItem *p1=new QStandardItem(QString("文件%1").arg(i+1));
        QStandardItem *p2=new QStandardItem(fileName);
        lRow<<p1<<p2;
        m_temModel->appendRow(lRow);
        //qDebug() << QString("文件%1:").arg(i+1, 2) << fileName;
    }
    ui->tableView->setModel(m_temModel);
}

